package leetcode.code0061;

import leetcode.helper.tree.ListNode;

public class Solution61 {

	public ListNode rotateRight(ListNode head, int k) {
		if (head == null)
			return head;
		ListNode ans = head;
		ListNode p = head;
		int size = 0;
		while (p != null) {// 找到最后一个节点 && 整体计数
			ans = p;
			p = p.next;
			size++;
		}
		ans.next = head;// 最后一个节点指向原始头部
		int move = size - (k % size);// %过后，得到真正的需要向右移动的个数，再多就循环了。总数 - 向右移动的数量 = 从头开始到哪里断尾
		ans = head;
		while (move > 0) {
			p = ans;
			ans = ans.next;
			move--;
		}
		p.next = null;
		return ans;
	}

	public static void main(String[] args) {
		Solution61 so = new Solution61();

	}

}
